package org.lanqiao.heuet.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.lanqiao.heuet.bean.UserInfoBean;
import org.lanqiao.heuet.dao.ILoginDao;

/**
 * 数据库操作层实现类
 * 
 * @author Administrator
 *
 * @param <T>
 */
public class LoginDaoImpl<T> implements ILoginDao<T> {

	/**
	 * 这里定义一个sessionfactory的变量，改变量无需初始化处理，由spring的依赖注入机制，进行初始化处理 只需要为该变量提供
	 * getter、setter接口即可，spring就可以根据spring的配置文件来进行初始化处理
	 */
	private SessionFactory sessionFactroy;

	@Override
	public List<T> isLogin(T t) {
		// 用户信息进行数据库验证操作
		// 获取数据库回话对象
		Session session = sessionFactroy.getCurrentSession();
		// 组织类似于sql语句的 hql查询语句（hql是Hibernate类似于sql语句的查询语句）
		String strHql = "from UserInfoBean where userName=:paraUserName and userPsw=:paraUserPsw";
		// 创建查询对象 query
		Query query = session.createQuery(strHql);
		// 组织Hql查询语句的参数map
		Map mapParas = new HashMap();
		mapParas.put("paraUserName", ((UserInfoBean) t).getUserName());
		mapParas.put("paraUserPsw", ((UserInfoBean) t).getUserPsw());
		// 使用query查询，进行Hibernate的hql查询，查询结果时list
		List lst = query.setProperties(mapParas).list();
		return lst;
	}

	public SessionFactory getSessionFactroy() {
		return sessionFactroy;
	}

	public void setSessionFactroy(SessionFactory sessionFactroy) {
		this.sessionFactroy = sessionFactroy;
	}
	public void addUserInfo(T t) {
		Session session = sessionFactroy.getCurrentSession();
		session.saveOrUpdate(t);
		
	}
	public List<T> queryAllUserInfo(int iOlder){
		// 用户信息进行数据库验证操作
				// 获取数据库回话对象
				Session session = sessionFactroy.getCurrentSession();
				// 组织类似于sql语句的 hql查询语句（hql是Hibernate类似于sql语句的查询语句）
				String strHql = "";
				if (iOlder == 0) {
					strHql = "from UserInfoBean";
				}
				else{
				     strHql = "from UserInfoBean order by userId desc";
				}
				
				// 创建查询对象 query
				Query query = session.createQuery(strHql);
				// 组织Hql查询语句的参数map
			
				// 使用query查询，进行Hibernate的hql查询，查询结果时list
				List lst = query.list();
				return lst;
	}

}
